package com.smart.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.smart.common.PageInfo;
import com.smart.model.domain.ProjectWeeklyTaskDO;
import com.smart.model.request.ProjectItemUpdateRequest;
import com.smart.model.request.ProjectWeeklyItemAddRequest;
import com.smart.model.request.ProjectWeeklyItemPageRequest;
import com.smart.model.request.ProjectWeeklyTaskRequest;
import com.smart.model.request.WeeklyReportDetailRequst;
import com.smart.model.vo.ProjectItemVO;
import com.smart.model.vo.ProjectReportVO;
import com.smart.model.vo.ProjectVO;
import com.smart.model.vo.ProjectWeeklyItemVO;
import com.smart.model.vo.ProjectWeeklyTaskVO;

import java.util.List;

/**
 * @author zhanghong
 */
public interface ProjectWeeklyTaskService extends IService<ProjectWeeklyTaskDO> {

    /**
     * 分页查询，手动分页
     * @param request
     * @return
     */
    PageInfo<ProjectVO> pageQuery(ProjectWeeklyTaskRequest request);
    /**
     * 新增
     * @param request
     * @return
     */
    Boolean add(ProjectWeeklyTaskRequest request);
    /**
     * 根据主键更新
     * @param request
     * @return
     */
    Boolean updateByKey(ProjectWeeklyTaskRequest request);
    /**
     * 根据主键删除
     * @param id
     * @return
     */
    Boolean deleteByKey(long id);

    /**
     * 添加项目周报信息项
     * @param request
     * @return
     */
    Boolean addItem(ProjectWeeklyItemAddRequest request);

    /**
     * 更新填报项
     * @param request
     * @return
     */
    Boolean updateItem(ProjectItemUpdateRequest request);

    /**
     * 获取项目周报详情
     * @param request
     * @return
     */
    ProjectReportVO getReportDetail(WeeklyReportDetailRequst request);

    /**
     * 未提报分页查询
     * @param request
     * @return
     */
    PageInfo<ProjectVO> unReportPageQuery(ProjectWeeklyTaskRequest request);

    /**
     * 分页查询周报填保项目
     * @param request
     * @return
     */
    PageInfo<ProjectWeeklyItemVO> pageListItem(ProjectWeeklyItemPageRequest request);

    /**
     * 【监管端】周报下载文件类型
     * @param request
     * @return
     */
    String weeklyReportFileType(ProjectWeeklyItemPageRequest request);
}
